{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# **第八章 向量代数与空间解析几何** 1.2.3页"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在平面解析几何中，通过坐标法把平面上的点与一对有序的数对应起来，把平面上的图形和方程对应起来，从而可以用代数方法来研究几何问题。空间解析几何也是按照类似的方法建立起来的。\n",
    "\n",
    "正像平面解析几何的知识对学习一元函数微积分是不可缺少的一样，空间解析几何的知识对学习多元函数微积分也是必要的。\n",
    "\n",
    "本章先引进向量的概念，根据向量的线性运算建立空间坐标系，然后利用坐标讨论向量的运算，并介绍空间解析几何的有关内容。 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第一节 向量及其线性运算"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## **一 向量的概念**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "客观世界中有这样一类量，它们既有大小，又有方向，例如位移、速度、加速度、力、力矩等等，这一类量叫做向量（或矢量）。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在数学上，常用一条有方向的线段，即有向线段来表示向量。有向线段的长度表示向量的大小，有向线段的方向表示向量的方向。以A为起点、B为终点的有向线段所表示的向量记作$\\overrightarrow{AB}$(图8 - 1)。有时也用一个黑体字母(书写时，在字母上面加箭头)来表示向量，例如$\\overrightarrow{a}$、$\\overrightarrow{b}$、$\\overrightarrow{c}$等。 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\86184\\AppData\\Roaming\\Python\\Python312\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 22270 (\\N{CJK UNIFIED IDEOGRAPH-56FE}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 定义起点和终点坐标\n",
    "start_point = [0, 0]  # 这里假设起点为(0, 0)\n",
    "end_point = [2, 1]  # 这里假设终点为(2, 1)，可根据实际需求修改\n",
    "\n",
    "# 绘制箭头\n",
    "plt.arrow(start_point[0], start_point[1], end_point[0] - start_point[0], end_point[1] - start_point[1],\n",
    "          head_width=0.1, head_length=0.1, fc='k', ec='k')\n",
    "\n",
    "# 标注起点和终点\n",
    "plt.text(start_point[0] - 0.1, start_point[1] - 0.1, 'A')\n",
    "plt.text(end_point[0] + 0.1, end_point[1] + 0.1, 'B')\n",
    "\n",
    "# 设置坐标轴范围，可根据坐标调整\n",
    "plt.xlim(-0.5, 2.5)\n",
    "plt.ylim(-0.5, 1.5)\n",
    "\n",
    "# 隐藏坐标轴刻度\n",
    "plt.xticks([])\n",
    "plt.yticks([])\n",
    "\n",
    "# 添加图名\n",
    "plt.title('图8 - 1')\n",
    "\n",
    "# 显示图形\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在实际问题中，有些向量与其起点有关(例如质点运动的速度与该质点的位置有关，一个力与该力的作用点的位置有关)，有些向量与其起点无关。由于一切向量的共性是它们都有大小和方向，因此在数学上我们只研究与起点无关的向量，并称这种向量为自由向量(以后简称向量)，即只考虑向量的大小和方向，而不论它的起点在什么地方。当遇到与起点有关的向量时，可在一般原则下作特别处理。 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于我们只讨论自由向量,所以如果两个向量a和b的大小相等,且方向相同,我们就说向量a和b是相等的,记作a=b.这就是说,经过平行移动后能完全重合的向量是相等的."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "向量的大小叫做向量的模，向量$\\overrightarrow{AB}$、$\\boldsymbol{a}$和$\\alpha$的模依次记作$|\\overrightarrow{AB}|$、$|\\boldsymbol{a}|$和$|\\alpha|$。模等于一的叫做单位向量。模等于零的向量叫做零向量，记作$\\boldsymbol{0}$或$\\overrightarrow{0}$。零向量的起点和终点重合，它的方向可以看做是任意的。 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "设有两个非零向量$\\boldsymbol{a}$，$\\boldsymbol{b}$，任取空间一点$O$，作$\\overrightarrow{OA}=\\boldsymbol{a}$，$\\overrightarrow{OB}=\\boldsymbol{b}$，规定不超过$\\pi$的$\\angle AOB$（设$\\varphi = \\angle AOB$，$0 \\leqslant \\varphi \\leqslant \\pi$）称为向量$\\boldsymbol{a}$与$\\boldsymbol{b}$的夹角（图8 - 2），记作$\\langle\\boldsymbol{a},\\boldsymbol{b}\\rangle$或$\\langle\\boldsymbol{b},\\boldsymbol{a}\\rangle$，即$\\langle\\boldsymbol{a},\\boldsymbol{b}\\rangle=\\varphi$。如果向量$\\boldsymbol{a}$与$\\boldsymbol{b}$中有一个是零向量，规定它们的夹角可以在0到$\\pi$之间任意取值。 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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99/r7VS3A3AXRnAABN3LL78sp06dkhkzZuiRkcLipnv37jpQ1NKkSZMC11u/fr307t1b6tatqw9TdejQQd++Z8+enHXq1aun/+wXXnhBrrnmmjxxcyY1+rNp0yZp2LChjp2FCxeW+O8LIPgIHABBt2PHDjlw4ICe+6IOJRVGjbKo0FDLvHnz8l0nIyNDEhISJDIyUgeTGhFSIzHZc2lyW758uYSGhuo/V0VWQS655BLZtWuXPux1/Phx6devn1x//fUl+vsCCD5OEwcQVCo4brnlFunfv78eHVFzYtRhqurVq+e7fu3atYt8zJ9++klPHn7++eclJiYm5xDVmaZNmyaffvqpLFu2TAeLipenn366wMdVwaS2Uy0qbq6++mr5448/pGrVqj79nQEEH4EDIKjUZN+0tDQ9B0YddlKjMnfeeafMnTu3xI+pDkupM7Fef/11GTx4sGzdulXHS2779u2T++67Tx+euuKKK+S9996TXr166UNgl1122VmP+corr+gzqFq0aKEnIavDaersrMqVK5d4OwEED4eoAASNGjkZN26cPqVbjY6ocFCff/311/LWW2+V6uys5ORkHSGNGzfWIzlqrk02dS6FmlPTunVrfcaWog5pqeBRo0nHjh076zHVPJ4XX3xRT4RWk5XVIS0VY/mdcQXAeTiLCgAAGIdfRQAAgHEIHAAAYBwCBwAAGIfAAQAAxiFwAACAcQgcAABgHAIHAAAYh8ABAADGIXAAAIBxCBwAAGAcAgcAAIhp/g+p4/Bu5G8/gwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "from matplotlib.patches import Arc  # 从 patches 模块导入 Arc 类\n",
    "\n",
    "# 绘制向量 a\n",
    "plt.arrow(0, 0, 3, 0, head_width=0.1, head_length=0.1, fc='k', ec='k', label='a')\n",
    "# 绘制向量 b\n",
    "plt.arrow(0, 0, 2, 2, head_width=0.1, head_length=0.1, fc='k', ec='k', label='b')\n",
    "\n",
    "# 绘制夹角弧线\n",
    "theta1 = 0\n",
    "theta2 = np.arctan(2 / 3)\n",
    "ax = plt.gca()\n",
    "arc = Arc((0, 0), 0.5, 0.5, theta1=theta1 * 180 / np.pi, theta2=theta2 * 180 / np.pi, color='k')\n",
    "ax.add_patch(arc)\n",
    "\n",
    "# 添加点和标签\n",
    "plt.plot([0, 3], [0, 0], 'ko')\n",
    "plt.plot([0, 2], [0, 2], 'ko')\n",
    "plt.text(3.2, -0.2, 'A')\n",
    "plt.text(2.2, 2.2, 'B')\n",
    "plt.text(0.2, 0.2, r'$\\varphi$')\n",
    "plt.text(0.1, -0.2, 'O')\n",
    "plt.text(1.5, -0.2, 'a')\n",
    "plt.text(1, 1, 'b')\n",
    "\n",
    "# 设置坐标轴标签和范围\n",
    "plt.xlabel('x - axis')\n",
    "plt.ylabel('y - axis')\n",
    "plt.xlim([-0.5, 3.5])\n",
    "plt.ylim([-0.5, 2.5])\n",
    "plt.axis('equal')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如果$\\langle\\boldsymbol{a},\\boldsymbol{b}\\rangle = 0$或$\\pi$，就称向量$\\boldsymbol{a}$与$\\boldsymbol{b}$平行，记作$\\boldsymbol{a}\\parallel\\boldsymbol{b}$。如果$\\langle\\boldsymbol{a},\\boldsymbol{b}\\rangle=\\frac{\\pi}{2}$，就称向量$\\boldsymbol{a}$与$\\boldsymbol{b}$垂直，记作$\\boldsymbol{a}\\perp\\boldsymbol{b}$。由于零向量与另一向量的夹角可以在0到$\\pi$之间任意取值，因此可以认为零向量与任何向量都平行，也可以认为零向量与任何向量都垂直。 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "当两个平行向量的起点放在同一点时，它们的终点和公共起点应在一条直线上。因此，两向量平行，又称两向量共线。 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "类似还有向量共面的概念。设有$k\\ (k\\geqslant3)$个向量，当把它们的起点放在同一点时，如果$k$个终点和公共起点在一个平面上，就称这$k$个向量共面。 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## **二 向量的线性运算**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**1.向量的加减法**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "向量的加法运算规定如下：\n",
    "\n",
    "设有两个向量$\\boldsymbol{a}$与$\\boldsymbol{b}$，任取一点$A$，作$\\overrightarrow{AB}=\\boldsymbol{a}$，再以$B$为起点，作$\\overrightarrow{BC}=\\boldsymbol{b}$，连接$AC$（图8 - 3），那么向量$\\overrightarrow{AC}=\\boldsymbol{c}$称为向量$\\boldsymbol{a}$与$\\boldsymbol{b}$的和，记作$\\boldsymbol{a}+\\boldsymbol{b}$，即\n",
    "\n",
    "$\\boldsymbol{c}=\\boldsymbol{a}+\\boldsymbol{b}$. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "# 绘制向量 a\n",
    "plt.arrow(0, 0, 3, 0, head_width=0.1, head_length=0.1, fc='k', ec='k', label='a')\n",
    "# 绘制向量 b\n",
    "plt.arrow(3, 0, 1, 2, head_width=0.1, head_length=0.1, fc='k', ec='k', label='b')\n",
    "# 绘制向量 a + b\n",
    "plt.arrow(0, 0, 4, 2, head_width=0.1, head_length=0.1, fc='k', ec='k', label='a + b')\n",
    "\n",
    "# 添加点 A, B, C\n",
    "plt.plot([0, 3, 4], [0, 0, 2], 'ko')\n",
    "plt.text(0, -0.2, 'A')\n",
    "plt.text(3, -0.2, 'B')\n",
    "plt.text(4, 2.2, 'C')\n",
    "\n",
    "# 设置坐标轴标签和范围\n",
    "plt.xlabel('x - axis')\n",
    "plt.ylabel('y - axis')\n",
    "plt.xlim([-0.5, 4.5])\n",
    "plt.ylim([-0.5, 2.5])\n",
    "plt.axis('equal')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上述作出两向量之和的方法叫做向量相加的三角形法则。 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "力学上有求合力的平行四边形法则，仿此，我们也有向量相加的平行四边形法则。这就是：当向量$\\boldsymbol{a}$与$\\boldsymbol{b}$不平行时，作$\\overrightarrow{AB}=\\boldsymbol{a}$，$\\overrightarrow{AD}=\\boldsymbol{b}$，以$AB$、$AD$为边作一平行四边形$ABCD$，连接对角线$AC$（图8 - 4），显然向量$\\overrightarrow{AC}$即等于向量$\\boldsymbol{a}$与$\\boldsymbol{b}$的和$\\boldsymbol{a}+\\boldsymbol{b}$。 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "向量的加法符合下列运算规律"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(1) 交换律 $\\boldsymbol{a}+\\boldsymbol{b}=\\boldsymbol{b}+\\boldsymbol{a}$;\n",
    "\n",
    "(2) 结合律 $(\\boldsymbol{a}+\\boldsymbol{b})+\\boldsymbol{c}=\\boldsymbol{a}+(\\boldsymbol{b}+\\boldsymbol{c})$.\n",
    "\n",
    "这是因为, 按向量加法的规定 (三角形法则), 从图 8 - 4 可见:\n",
    "\n",
    "$\\boldsymbol{a}+\\boldsymbol{b}=\\overrightarrow{AB}+\\overrightarrow{BC}=\\overrightarrow{AC}=\\boldsymbol{c}$,\n",
    "\n",
    "$\\boldsymbol{b}+\\boldsymbol{a}=\\overrightarrow{AD}+\\overrightarrow{DC}=\\overrightarrow{AC}=\\boldsymbol{c}$,\n",
    "\n",
    "所以符合交换律. 又如图 8 - 5 所示, 先作 $\\boldsymbol{a}+\\boldsymbol{b}$ 再加上 $\\boldsymbol{c}$, 即得和 $(\\boldsymbol{a}+\\boldsymbol{b})+\\boldsymbol{c}$, 若以 $\\boldsymbol{a}$ 与 $\\boldsymbol{b}+\\boldsymbol{c}$ 相加, 则得同一结果, 所以符合结合律. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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o0ms6hZUawg1AADPoY/GHRk+r9bEJNT8/PPPsbgaAADoo3FRdZ9Xawodah599FGZPXt21udXX321VKhQwfwi1q9fH+vxAQAChD4a92X4uFpT6FAzceJESU9PN+cXLVpkTgsWLJB27drJ3//+93iMEQAQEPTRuK+6j6s1JQr7A99++21WqJk3b56p1Fx66aXmgdiiRYt4jBEAEAD00XirWlOjRg1TrXEcR6yt1JQrVy7rQbdw4UJp27atOa//6aNHj8Z+hAAA69FH4y3VfVqtKXSo6dq1q1x//fVyySWXyJ49e8y0k/r444+z5kHhf71795akpCRzKlmypFSuXNnc55MmTTJz3kBRaKX3tttuk9q1a0tycrKp+nbq1EkWL17s9tDgIvpovCnDh701hQ41Tz75pAwcOFDOOOMM009TunRpc/muXbvk1ltvjccY4ZLLL7/c3K9fffWV6Zu68MILzTupjh07ypEjR9weHnxGH0dNmjSRJUuWyGOPPSYbNmww1V59XA0YMMDt4cFF9NF4U3UfVmuSHD9NlkVp7969UrZsWcnMzJTU1FS3h+P5So0u1Z87d26Oy/UF6eKLLzbz3foEBESqffv28r///c+8+8v9Tlwfa2lpaa6NDe720YSmnQL0cmR89NFHJuivXbtWzjnnHPGiHTt2mN4at++fSF+/I2oUfvPNN800k05D6Pn8dO7cufCjhW9cdNFF0qhRI3n99dcJNYjYjz/+aKoyw4YNCzu1QKAJJvpo/FOtOXDggKnWeH1BUESh5sorrzRz4SeffLI5nxftv6BZ2H7169c377iBSG3dutW8y9PHDqDoo/GPDB+thCoW6YNPA03ofF4nAk0w6INaAywQKa8/ESLx6KPxj+o+6q2J6bGffvnll1heHTzq008/lT/96U9uDwM+UrduXROEN2/e7PZQ4AHsR+M/GT5ZCVXoUKNNoto4lJumt8aNG8dqXPAobRTWVSvdunVzeyjwkfLly8tll10mTz31lJmbz43jxwUHfTT+VN0n1ZpCh5qUlBRp2LBh1vGfdNppyJAhpnyoqxtgj4MHD5peKg2x2qU/fPhwueKKK8yS7p49e7o9PPiMBhqdom7evLm89tprsmXLFlP103ftLVu2dHt4SAD6aPwtwwfVmkIfJmH+/PnmyemGG26QN954w+w98fXXX5tDJujhEmAPXa1StWpVKVGihNlJWlc96QtQr169pFixmM5cIgB0wz0Nx7oC6u677zZ7IFWqVMksaZ0wYYLbw0MC0EcT3s033yytWrWSMWPGiJdV98FKqCLvUzN48GBzxG59wXv33XflvPPOE69jnxoAcEeQ96MpaJ8aPfkh1Li5b02kr9+Ffrv9008/mX4KfWf1zDPPZB3Q8umnn452zAAAC9FHE3/aBtK7d28Jem9NoUNNgwYN5LvvvjPHerrppptk+vTp8sILL8iDDz4oHTp0iM8oAQC+RB9NZPTQM3oIIq1GVKxY0bymxrsS8tZbb0mzZs1Mr6zeZpcuXXzfW1PoUNOvXz/zwMy+pPeaa66R9evXy6FDh2I9Prj0JMSxnQDEAn00kZk6dapp51i1apWMHTtWRo8eLc8//3zcbm/+/PkmxOgCHy1S6EFltYk/mmqNZgC3pxY59hMMXZXy/vvvm31Enn32Wfnhhx/MA71ChQpuDw0WPK60KVibzvVFrXjx4m4PCwlCH03kPTW6z9snn3yStbHpoEGDzGGJNm3aFPH001dffSVTpkyJ6Pu1D1ab93W2JRa9NTp2DUlVqlQxhQ/XXr+dIjpw4IDz6aefOuvXr89xipfhw4c7TZs2dUqXLu1UqlTJueKKK5zNmzcX6joyMzP1r8p8xB9ee+01p0aNGuZ3k/00ceJEt4cGyx5X1atXd2bPnu0cPXrU7eEhzrZu3Zp1v+/fv9/t4XjS2rVrze+nSZMmTp8+fXJ8be7cuU6JEiWcI0eOhP3ZZcuWOSeddFLWqWTJkub7s182ffr0PG/7hBNOcCZNmhTV+PU2dPwPPPCAk5ycbM6npqY68RDp63ehl3Tv3r1b+vTpIwsWLAj79XgdKuG9996TAQMGmPk/nRq57777TIOypljmaItOD0x51VVXhX0X1b9/f7PktmvXrq6MDfY9rvTdnU5XX3vttfLSSy+5Nj7EF3008de0aVNZt25djqrYjh07zKrkkMqVK+f58yeccELUY9Bq/mmnnSaPPPKI+Lan5s477zS7f+o8mv5SdC8TnQvUbdALOoJ3NPR2tLP7zDPPNPulaIlt27Zt5pDtKBoNoFoazq8srPc3x/RCrB9X+vfM48pe9NEUXu6VRCtWrDCvq3lN1+rrrwbH0El37S5TpkyOy/TzvOgmutpHE43HH39cvKZEUbbJ1033NCXqBmy1atWSSy65xMxxjRgxImEroHReTekdmd+OuHrKPieHP2ivwzfffJPn1/VFSY/P8sQTTxz3e9aud10Jp0s1ly5dmuNr2kWvR3PXOWJ9rGTfFl8fM/o1vT6tvumustnpoTb0saXvOHJXA9PS0syOxjouvd7QYyBEdzrW+Vx9ctBDOWSnR4fWfSC0V0h/NvsLbunSpc31Jicnm6/t2bMnx8+2bdvWPEnrkcm1iS+70ONfg77+7OHDh7O+pisK9Hr1ieU///mP7Ny5M8fPnn/++XL66afLZ599dtwctL7D6tSpk1n+qtf766+/Zn1Nmwn1enVDRP17/OKLL3L8rM7Pn3322Sb0//e//83xNf0Z/f3rOPV69+3bl+Prer1anfvwww/NHHl2+oZCd/7Vaq3+bHb6f9SfLVmypHnXlt/jSunvSx9/bdq0yff74D8c16lo9O/1rrvukltuucX02owbN84898bLww8/bA57VKdOHVM51RkQfZ669957I74Ofc6dOXOmt5bpF3Zeq0yZMs6XX35pztesWdNZvny5Of/FF1+YObpE0Pn4Dh06OOeff36+3/fwww8f1ydCT80fZs6cGfb3E8mpdu3a5jo6deoU9uvZ54tzn6ZNm2a+ntd1q0GDBoX92vfff+9s37497Ne076qg633uuefCfm3jxo3Ob7/9FvZrPXr0MD9bsWLFPK/3jTfeCPu1pUuX5jmms88+23ytdevWeV7vBx98EPZrL7/8cp7XW6pUKfO1W2+9Nc/H/5YtW8J+bfz48QX+DvV7wn1NrzM07x3JSR9/sAt9NEXvqdG/1379+pmelHLlyjn33Xefc+zYsYivS1/vevXqVei+t8aNG5vnDH1+69q1a8Q/u3DhwrB/177rqalXr55Zo67vXHUaSDfg0/MTJ040qxsSQXtrNm7cKMuXLy9w12NNvtkrNenp6QkYoT9Een/pHG24So168sknpXPnzsdVakLVEU3xuSs1oWOE6U7U4So1Svdr0HcQuSs1etLX3JdffjlspSZUtg1XqVFapdDVBbkrNboKQKsM2gsSrlKjtFQbrlKj/vznP5sp0dyVGq2ahJZPhqvUKF1tFq5So8466yyzOiF3pSb7mMJVapS+49KKTe5KjfY36KqFWbNmha3UqA8++CBspUbphpta1cpdqdFlniNHjpRIJer5AolBH03R6XPAOeec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zs0332yWdH/77bee2adGl5z36dPHfP3w4cNOxYoVTWMxEO3+RykpKc5JJ51kzletWtVZu3at20O13u7du83ve8OGDW4PBTCNwqeffrpz7NixrMvuvfdec5ntMiN8/fZNpUbp0Yl1/vGhhx6Sxo0by7p160y5OHfzcKJoE/BXX31l+iB0aacmaH1HN3LkSPN1TdM65hdeeMGV8cGfcj+u9HhiF198sWzYsME85vUdml7Wrl07+frrr90erlW2bNki1113ndSuXdtMV4cOh0DvErzi3HPPzVHJ1ZkKfdzqQhr4sFHYa816OmXQpk0bc/4f//iHme/M3hisU0/a26N767DvAIryuNJt+H/++eesAygqLTfr40m36X/kkUdcHKldtA+uVq1a5veqf8f6JqVBgwZy6NAht4cGIAK+qtR4mYYZPebTE088Yd5Nh07r1683T44vvfSS20OERfSdmvZ7aH8NYkM31svIyJAHHnjAVMZOP/10+emnn9weFpDDypUrc3y+YsUK05ujb4Tgw0qNl4+krE+AukNk7opMt27dzBRUv379XBsf/O3gwYPy7bffmvP6ONPK3/79+01lAbFRrlw503itB5zVbRt0yimSncqBRNLHpTaz33LLLfLRRx+Z/ZP0zTR+R6iJEQ0tbdu2DTvFpKFGN0r73//+x2ZpKBLtHQvtj1SmTBmpX7++vPLKK1lTVIieVr5mzZpljoquU0716tUzR+Tmdwwv6dmzp6nQNm/e3FRn9JAKujQcv/PVsZ+iFatjPwEAAO+9ftNTAwAArECoAQAAViDUAAAAKxBqAACAFQg1AADACoQaAABgBUINAACwAqEGAABYgVADAACsQKgBAABWINQAAAArEGoAAIAVCDUAAMAKhBoAAGAFQg0AALACoQYAAFiBUAMAAKxAqAEAAFYg1AAAACsQagAAgBUINQAAwAqEGgAAYAVCDQAAsAKhBgAAWIFQAwAArECoAQAAViDUAAAAKxBqAACAFQg1AADACoQaAABgBUINAACwAqEGAABYgVADAACsQKgBAABWINQAAAAr+CbUDBs2TM477zw58cQTJS0tze3hAAAAj/FNqDl06JD85S9/kf79+7s9FAAA4EElxCeGDh1qPk6ZMiXinzl48KA5hezduzcuYwMAAO7zTaWmKEaMGCFly5bNOqWnp7s9JAAAECdWh5rB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/KdUq1ZN9uzZk3VZhw4d5MILL5Rjx44dN/106NAhGThwoFStWlVSUlKkVq1aMmLEiKjGCCD+CDUAEqJSpUoyadIkGTJkiKxZs0b27dsnf/3rX014uPjii6O67sOHD8u//vUvWb9+vQkmX331lfTu3Tvr6/fff7+ccsopcuONN5rPn3rqKROopk6dKsWKHf80+O9//1vefPNNefnllyUjI0NmzJhhfh6AtzH9BCChBgwYIO+8846prGzYsEFWr14tycnJMb0NDU3NmjUzwal06dLmsi+++EIaN24st956qwktzz//vKnohGilZs6cOXLllVfK7bffLp988okZp14OwB+o1ABIqMcff1yOHDkir7zyiqmA5Bdo2rVrZ0KJns4888w8v2/t2rXSqVMnqVmzppmCat26tbl827ZtWd9Tu3Ztc9uPPvqodO7cOUegyU2rPOvWrZN69eqZgPPf//63yP9fAIlDqAGQUJ9//rns3LnT9LLoNFF+tJqi4UJP//nPf8J+z4EDB+Syyy6T1NRUE5K08qMVl1BvTHbLli2T4sWLm9vVYJWXc845R7788kszpfXrr7/K1VdfLVdddVWR/r8AEocl3QASRkNGjx495JprrjFVEO1x0Smok08+Oez3V69evcDr3Lx5s2kAHjlypKSnp2dNP+U2e/Zsef311+Xdd981IUUDy9ChQ/O8Xg1JOk49aaC5/PLL5ccff5Ty5csX6v8MIHEINQASRht2MzMzTU+LTilp9eWGG26QefPmFfk6dcpJV1CNGzdO+vXrJxs3bjSBJbtvvvlG+vfvb6aeWrVqJZMnT5aOHTua6a1zzz33uOscPXq0Wfl09tlnm0ZinSrTVVVpaWlFHieA+GP6CUBCaIVkzJgxZvm1VkE0LOj5999/XyZMmBDVqqopU6aY4HHGGWeYio32zoToWgjtkWnevLlZaaV0ukpDjlaN9u/ff9x1al/OqFGjTDOzNhzrdJUGsHArpQB4B6ufAACAFXjbAQAArECoAQAAViDUAAAAKxBqAACAFQg1AADACoQaAABgBUINAACwAqEGAABYgVADAACsQKgBAABWINQAAACxwf8DnUw++pXBcOUAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "# 绘制图 8 - 4\n",
    "# 绘制向量 a\n",
    "plt.arrow(0, 0, 3, 0, head_width=0.1, head_length=0.1, fc='k', ec='k', label='a')\n",
    "# 绘制向量 b\n",
    "plt.arrow(0, 0, 1, 2, head_width=0.1, head_length=0.1, fc='k', ec='k', label='b')\n",
    "# 绘制向量 a + b\n",
    "plt.arrow(0, 0, 4, 2, head_width=0.1, head_length=0.1, fc='k', ec='k', label='a + b')\n",
    "# 绘制平行四边形辅助线\n",
    "plt.arrow(3, 0, 1, 2, head_width=0, head_length=0, fc='k', ec='k', linestyle='--')\n",
    "plt.arrow(1, 2, 3, 0, head_width=0, head_length=0, fc='k', ec='k', linestyle='--')\n",
    "# 添加点 A, B, C, D\n",
    "plt.plot([0, 3, 4, 1], [0, 0, 2, 2], 'ko')\n",
    "plt.text(0, -0.2, 'A')\n",
    "plt.text(3, -0.2, 'B')\n",
    "plt.text(4, 2.2, 'C')\n",
    "plt.text(1, 2.2, 'D')\n",
    "plt.text(1.5, 1, 'a + b')\n",
    "\n",
    "# 绘制图 8 - 5\n",
    "# 绘制向量 a\n",
    "plt.arrow(5, 0, 3, 0, head_width=0.1, head_length=0.1, fc='k', ec='k')\n",
    "# 绘制向量 b\n",
    "plt.arrow(8, 0, 1, 2, head_width=0.1, head_length=0.1, fc='k', ec='k')\n",
    "# 绘制向量 c\n",
    "plt.arrow(9, 2, -1, 2, head_width=0.1, head_length=0.1, fc='k', ec='k')\n",
    "# 绘制向量 a + b\n",
    "plt.arrow(5, 0, 4, 2, head_width=0, head_length=0, fc='k', ec='k')\n",
    "# 绘制向量 b + c\n",
    "plt.arrow(8, 0, 0, 4, head_width=0, head_length=0, fc='k', ec='k')\n",
    "# 绘制向量 a + b + c\n",
    "plt.arrow(5, 0, 3, 4, head_width=0.1, head_length=0.1, fc='k', ec='k')\n",
    "# 添加标签\n",
    "plt.text(5 - 0.2, -0.2, 'a')\n",
    "plt.text(8 + 0.2, -0.2, 'b')\n",
    "plt.text(9 - 1 - 0.2, 2 + 2 + 0.2, 'c')\n",
    "plt.text(5 + 2, 1, 'a + b')\n",
    "plt.text(8, 2, 'b + c')\n",
    "plt.text(5 + 1.5, 2 + 2, 'a + b + c')\n",
    "\n",
    "# 设置坐标轴标签和范围\n",
    "plt.xlabel('x - axis')\n",
    "plt.ylabel('y - axis')\n",
    "plt.xlim([-0.5, 12.5])\n",
    "plt.ylim([-0.5, 6.5])\n",
    "plt.axis('equal')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于向量的加法符合交换律与结合律，故$n$个向量$\\boldsymbol{a}_{1},\\boldsymbol{a}_{2},\\cdots,\\boldsymbol{a}_{n}(n\\geqslant3)$相加可写成\n",
    "\n",
    "$\\boldsymbol{a}_{1}+\\boldsymbol{a}_{2}+\\cdots+\\boldsymbol{a}_{n}$。 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "并按向量相加的三角形法则，可得$n$个向量相加的法则如下：以前一向量的终点作为次一向量的起点，相继作向量$\\boldsymbol{a}_{1},\\boldsymbol{a}_{2},\\cdots,\\boldsymbol{a}_{n}$，再以第一个向量的起点为起点，最后一个向量的终点为终点作一向量，这个向量即为所求的和。如图8 - 6，有\n",
    "\n",
    "$\\boldsymbol{s}=\\boldsymbol{a}_{1}+\\boldsymbol{a}_{2}+\\boldsymbol{a}_{3}+\\boldsymbol{a}_{4}+\\boldsymbol{a}_{5}$。 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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73Q5fPiw2M3YsWOlRYsW5qziVatWlZ49e8quXbsKvZ1THnvh7J9THnuvvvqqNGnSJHCCt9atW8snn3ziivstnP1zyv2Wl3HjxpntHTFihDjh/iPchGDWrFkycuRIc9jbxo0bpWnTptKpUyc5evRonuuvXbtW+vTpIwMHDpRNmzaZJy1dtm3bJm7YP6UP6IyMjMDy/fffix2dOXPG7I+Gt2Ds3btXunbtKu3bt5fNmzebB/SgQYPks88+Ezfsn5++iGa///TF1W5WrVolQ4cOlS+++ELS0tLkwoULctttt5l9zo+THnvh7J9THnt6Nnh9UdywYYOsX79ebrnlFunRo4ds377d8fdbOPvnlPstty+//FKmTZtmglxBbHX/6aHgCE7Lli19Q4cODVy+ePGir2bNmr6xY8fmuX6vXr18Xbt2zXFdamqq77//+799bti/t956y1ehQgWf0+if/bx58wpc59FHH/U1bNgwx3W9e/f2derUyeeG/fv73/9u1vvpp598TnP06FGz7atWrcp3Hac99kLdP6c+9lTFihV906dPd939Fsz+OfF+O3XqlO+aa67xpaWl+dq2besbPnx4vuva6f6juQnS+fPnTTrv2LFjjs+p0suff/55nrfR67Ovr7QJyW99p+2fOn36tNStW9d8cFph71icxEn3XVEkJydLjRo15NZbb5U1a9aIE2RmZpp/K1Wq5Mr7L5j9c+Jj7+LFizJz5kzTSOnwjdvut2D2z4n329ChQ02Lnft+sfv9R7gJ0vHjx80fb7Vq1XJcr5fzm6eg14eyvtP2r379+vLmm2/KggUL5N133zWfuN6mTRs5cOCAOF1+951+Au7Zs2fF6TTQTJ06VebOnWsWfaJt166dGY60M/0b0yHCG2+8URo1apTvek567IWzf0567G3dulXKli1r5q4NHjxY5s2bJw0aNHDN/RbK/jnpflMa1vQ5QeeFBcNO95/nPhUckaPvTrK/Q9EH6fXXX2/GZp9++mlLtw0F0ydZXbLfd3v27JFJkybJO++8I3Z+F6nj9//85z/FjYLdPyc99vTvTOetaSP14YcfyoABA8w8o/wCgNOEsn9Out/S09Nl+PDhZh6YUyY9Z0e4CVLlypWlePHicuTIkRzX6+Xq1avneRu9PpT1nbZ/uZUsWVKaNWsmu3fvFqfL777TyYClS5cWN2rZsqWt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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "# 定义向量组\n",
    "vectors = [\n",
    "    (3, 0),  # a1\n",
    "    (1, 2),  # a2\n",
    "    ( - 2, 1),  # a3\n",
    "    ( - 1, - 1),  # a4\n",
    "    (1, - 2)  # a5\n",
    "]\n",
    "\n",
    "# 初始化起点坐标\n",
    "start = np.array([0, 0])\n",
    "\n",
    "# 绘制各个向量\n",
    "for i, (x, y) in enumerate(vectors):\n",
    "    end = start + np.array([x, y])\n",
    "    plt.arrow(start[0], start[1], x, y, head_width=0.1, head_length=0.1, fc='k', ec='k')\n",
    "    # 计算向量中点坐标用于放置标签\n",
    "    mid_x = (start[0] + end[0]) / 2\n",
    "    mid_y = (start[1] + end[1]) / 2\n",
    "    plt.text(mid_x, mid_y, f\"$a_{i + 1}$\", ha='center', va='center')\n",
    "    start = end\n",
    "\n",
    "# 计算和向量\n",
    "sum_x = sum([v[0] for v in vectors])\n",
    "sum_y = sum([v[1] for v in vectors])\n",
    "plt.arrow(0, 0, sum_x, sum_y, head_width=0.1, head_length=0.1, fc='k', ec='k', label='s')\n",
    "sum_mid_x = sum_x / 2\n",
    "sum_mid_y = sum_y / 2\n",
    "plt.text(sum_mid_x, sum_mid_y, \"$s$\", ha='center', va='center')\n",
    "\n",
    "# 设置坐标轴标签和范围\n",
    "plt.xlabel('x - axis')\n",
    "plt.ylabel('y - axis')\n",
    "x_values = [0] + [v[0] for v in vectors] + [sum_x]\n",
    "y_values = [0] + [v[1] for v in vectors] + [sum_y]\n",
    "x_min, x_max = min(x_values) - 0.5, max(x_values) + 0.5\n",
    "y_min, y_max = min(y_values) - 0.5, max(y_values) + 0.5\n",
    "plt.xlim(x_min, x_max)\n",
    "plt.ylim(y_min, y_max)\n",
    "plt.axis('equal')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "设$\\boldsymbol{a}$为一向量，与$\\boldsymbol{a}$的模相同而方向相反的向量叫做$\\boldsymbol{a}$的负向量，记作$-\\boldsymbol{a}$。由此，我们规定两个向量$\\boldsymbol{b}$与$\\boldsymbol{a}$的差\n",
    "$$\\boldsymbol{b}-\\boldsymbol{a}=\\boldsymbol{b}+(-\\boldsymbol{a}).$$\n",
    "即把向量$-\\boldsymbol{a}$加到向量$\\boldsymbol{b}$上，便得$\\boldsymbol{b}$与$\\boldsymbol{a}$的差$\\boldsymbol{b}-\\boldsymbol{a}$（图8 - 7(a)）。 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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yqZ+xnlXMbafc34873wVaoYPHy4HDhwwTyIdHNypUyfTp1ly8DD8r02bNqac+c9//tOUc0P0pOnVq5csWLBAUlNT6XoMM3jwYMnIyJA5c+aYFUD1BVZfWHXmoA30gnry5Enzu4VffHXs3MyZM83zAtXDeVc5tp9zvjzvnACh+8lfrrjiCtO9+M033xR7PDc316ldu7Yzbtw419rmNV9//bV5bq9atarosdWrV5/WleBXWvLWFYR/+9vfmtJ++Na6dWtn1qxZbjfRGpx3FWP7Oee1866i129CDTzrX//6l+m3veyyy5yVK1c62dnZztKlS50OHTo45557rnPw4EG3m+gZOr6sYcOGzsiRI51t27Y5y5Ytc7p27WrNC6z+DomJic7hw4dP+9ovfvELp0uXLq60y0acdxVj+znntfOOUFMKQo3/7Ny50xk1apR5t3DWWWeZwWi33nqreZeE4t59913nvPPOM/dF69ixo7NixQprXmAHDRrkDBgwoNSv6f3f9Pf89NNPY94uW3HeVYzN55zXzruKXr/j9A8JiPz8fLOysC7Ex5o1AADYdf32zTo1AAAA5SHUAAAAKxBqAACAFQg1AADACoQaAABgBUINAACwAqEGAABYgVADAACsQKgBAABWINQAAAArEGoAAIAVCDUAAMAKhBoAAGAFQg0AALACoQYAAFiBUAMAAKxAqAEAAFYg1AAAACsQagAAgBUINQAAwAqEGgAAYAVCDQAAsAKhBgAAWIFQAwAArECoAQAAViDUAAAAKxBqAACAFQg1AADACoQaAABgBUINAACwgm9CzW9+8xvp3r271K5dW+rXr+92cwAAgMf4JtScOHFCrr32Whk/frzbTQEAAB5UQ3ziwQcfNH8///zzFf6egoICs4Xk5+dHpW0AAMB9vqnUVEVWVpakpKQUbc2bN3e7SQAAIEqsDjXTpk2TvLy8oi0nJ8ftJgEAABtDzdSpUyUuLq7cbcuWLVX++TVr1pTk5ORiGwAAsJOrY2p+/vOfy+jRo8vdJzMzM2btAQAA/uVqqGncuLHZAAAAAjP7KTs7Ww4dOmT+PnXqlGzcuNE83qZNG6lbt67bzQMAAC7zTai577775IUXXij6vHPnzubv5cuXS69evVxsGQAA8II4x3EcCQhdp0andutMKAYNAwBg1/Xb6indAAAgOAg1AADACoQaAABg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/elP5s7tehds/Td+9KMfyf79+4u+Pn36dElLS5ODBw8WPTZw4EDp3bu3FBYWntb9dOLECbnlllukWbNmkpSUJBkZGZKVlVWtNgKIPkINgJho3Lix/M///I888MAD8vHHH8uRI0fkxhtvNOHh8ssvr9bP/u677+RXv/qVfPrppyaY7Ny5U0aPHl309XvuuUdatmwpP/nJT8znM2fONIHqhRdekPj4018Gf//738sbb7whixcvlq1bt8qLL75ovh+At9H9BCCmJk6cKO+9956prGzatEnWrVsnNWvWjOi/oaGpa9euJjjVrVvXPLZ9+3bp1KmTTJgwwYSW5557zlR0QrRSs2TJErn66qvltttuk3/84x+mnfo4AH+gUgMgph5//HE5efKkvPTSS6YCUl6g6d+/vwklup1//vll7rd+/XoZPHiwtGjRwnRB9ezZ0zyenZ1dtE9mZqb5tx955BG58soriwWakrTKs3HjRmnbtq0JOO+8806Vf18AsUOoARBTX375pezdu9eMZdFuovJoNUXDhW5//etfS93n2LFj0rdvX0lOTjYhSSs/WnEJjY0Jt2rVKklISDD/rgarslx00UWyY8cO06X17bffynXXXSfXXHNNlX5fALHDlG4AMaMhY+TIkTJ8+HBTBdExLtoF1aRJk1L3P+ecc874M7ds2WIGAD/88MPSvHnzou6nkhYtWiSvvvqqrFixwoQUDSwPPvhgmT9XQ5K2UzcNNP369ZNDhw5JgwYNKvU7A4gdQg2AmNEBu3l5eWZMi3YpafXlpptukjfffLPKP1O7nHQG1YwZM2TcuHGyefNmE1jC7d69W8aPH2+6nnr06CHz5s2TQYMGme6tSy655LSf+cQTT5iZT507dzYDibWrTGdV1a9fv8rtBBB9dD8BiAmtkDz55JNm+rVWQTQs6MerV6+WWbNmVWtW1fPPP2+CR/v27U3FRsfOhOhcCB0j061bNzPTSml3lYYcrRodPXr0tJ+p43IeffRRM5hZBxxrd5UGsNJmSgHwDmY/AQAAK/C2AwAAWIFQAwAArECoAQAAViDUAAAAKxBqAACAFQg1AADACoQaAABgBUINAACwAqEGAABYgVADAACsQKgBAABig/8DV7/MSX+FEe4AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "# 绘制图 (a)\n",
    "# 向量 a 的起点 (0, 0)，终点 (3, 0)\n",
    "a_start = np.array([0, 0])\n",
    "a_end = np.array([3, 0])\n",
    "# 向量 b 的起点 (0, 0)，终点 (1, 2)\n",
    "b_start = np.array([0, 0])\n",
    "b_end = np.array([1, 2])\n",
    "# 向量 -a 的起点 (3, 0)，终点 (0, 0)\n",
    "na_start = a_end\n",
    "na_end = a_start\n",
    "# 向量 b - a 的起点 (0, 0)，终点 (1 - 3, 2 - 0)\n",
    "ba_start = b_start\n",
    "ba_end = b_end - a_end\n",
    "\n",
    "# 绘制向量 a\n",
    "plt.arrow(a_start[0], a_start[1], a_end[0] - a_start[0], a_end[1] - a_start[1],\n",
    "          head_width=0.1, head_length=0.1, fc='k', ec='k', label='a')\n",
    "# 绘制向量 b\n",
    "plt.arrow(b_start[0], b_start[1], b_end[0] - b_start[0], b_end[1] - b_start[1],\n",
    "          head_width=0.1, head_length=0.1, fc='k', ec='k', label='b')\n",
    "# 绘制向量 -a\n",
    "plt.arrow(na_start[0], na_start[1], na_end[0] - na_start[0], na_end[1] - na_start[1],\n",
    "          head_width=0.1, head_length=0.1, fc='k', ec='k', label='-a')\n",
    "# 绘制向量 b - a\n",
    "plt.arrow(ba_start[0], ba_start[1], ba_end[0] - ba_start[0], ba_end[1] - ba_start[1],\n",
    "          head_width=0.1, head_length=0.1, fc='k', ec='k', label='b - a')\n",
    "\n",
    "# 绘制平行四边形辅助线\n",
    "plt.plot([a_end[0], b_end[0]], [a_end[1], b_end[1]], 'k--')\n",
    "plt.plot([b_end[0], ba_end[0]], [b_end[1], ba_end[1]], 'k--')\n",
    "\n",
    "# 添加点 O, A, B\n",
    "plt.plot([a_start[0], a_end[0], b_end[0]], [a_start[1], a_end[1], b_end[1]], 'ko')\n",
    "plt.text(a_start[0] - 0.2, a_start[1] - 0.2, 'O')\n",
    "plt.text(a_end[0] - 0.2, a_end[1] - 0.2, 'A')\n",
    "plt.text(b_end[0] + 0.2, b_end[1] + 0.2, 'B')\n",
    "\n",
    "# 标注向量名称\n",
    "mid_a = (a_start + a_end) / 2\n",
    "plt.text(mid_a[0], mid_a[1] - 0.2, 'a')\n",
    "mid_b = (b_start + b_end) / 2\n",
    "plt.text(mid_b[0], mid_b[1] + 0.2, 'b')\n",
    "mid_ba = (ba_start + ba_end) / 2\n",
    "plt.text(mid_ba[0], mid_ba[1] + 0.2, 'b - a')\n",
    "\n",
    "# 绘制图 (b)\n",
    "# 新的向量 a 的起点 (5, 0)，终点 (8, 0)\n",
    "a2_start = np.array([5, 0])\n",
    "a2_end = np.array([8, 0])\n",
    "# 新的向量 b 的起点 (5, 0)，终点 (6, 2)\n",
    "b2_start = np.array([5, 0])\n",
    "b2_end = np.array([6, 2])\n",
    "# 新的向量 b - a 的起点 (8, 0)，终点 (6, 2)\n",
    "ba2_start = a2_end\n",
    "ba2_end = b2_end\n",
    "\n",
    "# 绘制新的向量 a\n",
    "plt.arrow(a2_start[0], a2_start[1], a2_end[0] - a2_start[0], a2_end[1] - a2_start[1],\n",
    "          head_width=0.1, head_length=0.1, fc='k', ec='k')\n",
    "# 绘制新的向量 b\n",
    "plt.arrow(b2_start[0], b2_start[1], b2_end[0] - b2_start[0], b2_end[1] - b2_start[1],\n",
    "          head_width=0.1, head_length=0.1, fc='k', ec='k')\n",
    "# 绘制新的向量 b - a\n",
    "plt.arrow(ba2_start[0], ba2_start[1], ba2_end[0] - ba2_start[0], ba2_end[1] - ba2_start[1],\n",
    "          head_width=0.1, head_length=0.1, fc='k', ec='k')\n",
    "\n",
    "# 添加新的点 O, A, B\n",
    "plt.plot([a2_start[0], a2_end[0], b2_end[0]], [a2_start[1], a2_end[1], b2_end[1]], 'ko')\n",
    "plt.text(a2_start[0] - 0.2, a2_start[1] - 0.2, 'O')\n",
    "plt.text(a2_end[0] - 0.2, a2_end[1] - 0.2, 'A')\n",
    "plt.text(b2_end[0] + 0.2, b2_end[1] + 0.2, 'B')\n",
    "\n",
    "# 标注新的向量名称\n",
    "mid_a2 = (a2_start + a2_end) / 2\n",
    "plt.text(mid_a2[0], mid_a2[1] - 0.2, 'a')\n",
    "mid_b2 = (b2_start + b2_end) / 2\n",
    "plt.text(mid_b2[0], mid_b2[1] + 0.2, 'b')\n",
    "mid_ba2 = (ba2_start + ba2_end) / 2\n",
    "plt.text(mid_ba2[0], mid_ba2[1] + 0.2, 'b - a')\n",
    "\n",
    "# 设置坐标轴标签和范围\n",
    "plt.xlabel('x - axis')\n",
    "plt.ylabel('y - axis')\n",
    "plt.xlim([-0.5, 9.5])\n",
    "plt.ylim([-0.5, 2.5])\n",
    "plt.axis('equal')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "特别地，当$\\boldsymbol{b}=\\boldsymbol{a}$时，有\n",
    "$$\\boldsymbol{a}-\\boldsymbol{a}=\\boldsymbol{a}+(-\\boldsymbol{a})=\\boldsymbol{0}.$$\n",
    "显然，任给向量$\\overrightarrow{AB}$及点$O$，有\n",
    "$$\\overrightarrow{AB}=\\overrightarrow{AO}+\\overrightarrow{OB}=\\overrightarrow{OB}-\\overrightarrow{OA},$$\n",
    "因此，若把向量$\\boldsymbol{a}$与$\\boldsymbol{b}$移到同一起点$O$，则从$\\boldsymbol{a}$的终点$A$向$\\boldsymbol{b}$的终点$B$所引向量$\\overrightarrow{AB}$便是向量$\\boldsymbol{b}$与$\\boldsymbol{a}$的差$\\boldsymbol{b}-\\boldsymbol{a}$（图8 - 7(b)）。\n",
    "由三角形两边之和大于第三边，有\n",
    "$$|\\boldsymbol{a}+\\boldsymbol{b}|\\leqslant|\\boldsymbol{a}|+|\\boldsymbol{b}| \\text{ 及 } |\\boldsymbol{a}-\\boldsymbol{b}|\\leqslant|\\boldsymbol{a}|+|\\boldsymbol{b}|,$$\n",
    "其中等号在$\\boldsymbol{a}$与$\\boldsymbol{b}$同向或反向时成立。 "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
